
[CmdletBinding(DefaultParameterSetName='Default')]
PARAM(
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleDefaultActionDescription
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleDescription
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleName
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleRole
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ActiveControl
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AllowDrop
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Anchor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScaleDimensions
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScaleMode
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AutoScroll
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollMargin
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollMinSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollOffset
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollPosition
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AutoSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoSizeMode
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoValidate
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackColor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackgroundImage
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackgroundImageLayout
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BindingContext
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BorderStyle
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Bounds
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Capture
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$CausesValidation
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ClientSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Color
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ContextMenu
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ContextMenuStrip
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Controls
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Cursor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Dock
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Enabled
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Font
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ForeColor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Height
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ImeMode
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$IsAccessible
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Left
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Location
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Margin
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$MaximumSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$MinimumSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Name
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Padding
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Parent
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Region
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$RightToLeft
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$ShowButton
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Site
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Size
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$TabIndex
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$TabStop
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Tag
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Text
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Top
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$UseWaitCursor
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Visible
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Width
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$WindowTarget
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_AutoSizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_AutoValidateChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Load
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TextChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Scroll
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackgroundImageChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackgroundImageLayoutChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BindingContextChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_CausesValidationChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ClientSizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ContextMenuChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ContextMenuStripChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_CursorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DockChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_EnabledChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_FontChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ForeColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_LocationChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MarginChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_RegionChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_RightToLeftChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_SizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TabIndexChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TabStopChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_VisibleChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Click
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ControlAdded
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ControlRemoved
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragDrop
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragEnter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragOver
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragLeave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_GiveFeedback
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HandleCreated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HandleDestroyed
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HelpRequested
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Invalidated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_PaddingChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Paint
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_QueryContinueDrag
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_QueryAccessibilityHelp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DoubleClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Enter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_GotFocus
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyPress
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyUp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Layout
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Leave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_LostFocus
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseDoubleClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseCaptureChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseEnter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseLeave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseHover
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseMove
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseUp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseWheel
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Move
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_PreviewKeyDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Resize
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ChangeUICues
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_StyleChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_SystemColorsChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Validating
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Validated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ParentChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ImeModeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Disposed
,
	[Parameter(ValueFromRemainingArguments=$true)]
	[string[]]$DependencyProps
)

## Preload the assembly if it's not already loaded


if( [Array]::BinarySearch(@(Get-BootsAssemblies), 'Microsoft.NodeXL.ApplicationUtil, Version=1.0.1.90, Culture=neutral, PublicKeyToken=7d233ba7875a1b76' ) -lt 0 ) {
  $null = [Reflection.Assembly]::LoadFrom( 'C:\Program Files\Microsoft Research\Microsoft NodeXL Excel Template\Microsoft.NodeXL.ApplicationUtil.dll' ) 
}
if($ExecutionContext.SessionState.Module.Guid -ne (Get-BootsModule).Guid) {
	Write-Warning "ColorPicker not invoked in PowerBoots context. Attempting to reinvoke."
   $scriptParam = $PSBoundParameters
   return iex "& (Get-BootsModule) '$($MyInvocation.MyCommand.Path)' `@PSBoundParameters"
}
# Write-Host "ColorPicker in module $($executioncontext.sessionstate.module) context!" -fore Green


function Global:New-Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker {
<#
.Synopsis
   Create a new ColorPicker object
.Description
   Generates a new Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker object, and allows setting all of it's properties
.Notes
 AUTHOR:    Joel Bennett http://HuddledMasses.org
 LASTEDIT:  08/14/2009 09:37:15
#>
 
[CmdletBinding(DefaultParameterSetName='Default')]
PARAM(
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleDefaultActionDescription
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleDescription
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleName
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AccessibleRole
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ActiveControl
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AllowDrop
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Anchor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScaleDimensions
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScaleMode
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AutoScroll
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollMargin
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollMinSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollOffset
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoScrollPosition
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$AutoSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoSizeMode
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$AutoValidate
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackColor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackgroundImage
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BackgroundImageLayout
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BindingContext
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$BorderStyle
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Bounds
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Capture
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$CausesValidation
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ClientSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Color
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ContextMenu
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ContextMenuStrip
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Controls
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Cursor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Dock
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Enabled
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Font
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ForeColor
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Height
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$ImeMode
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$IsAccessible
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Left
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Location
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Margin
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$MaximumSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$MinimumSize
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Name
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Padding
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Parent
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Region
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$RightToLeft
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$ShowButton
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Site
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Size
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$TabIndex
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$TabStop
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Tag
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Text
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Top
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$UseWaitCursor
,
	[Parameter(ParameterSetName='Default')]
	[Switch]$Visible
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$Width
,
	[Parameter(ParameterSetName='Default')]
	[Object[]]$WindowTarget
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_AutoSizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_AutoValidateChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Load
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TextChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Scroll
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackgroundImageChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BackgroundImageLayoutChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_BindingContextChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_CausesValidationChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ClientSizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ContextMenuChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ContextMenuStripChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_CursorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DockChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_EnabledChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_FontChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ForeColorChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_LocationChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MarginChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_RegionChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_RightToLeftChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_SizeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TabIndexChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_TabStopChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_VisibleChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Click
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ControlAdded
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ControlRemoved
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragDrop
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragEnter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragOver
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DragLeave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_GiveFeedback
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HandleCreated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HandleDestroyed
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_HelpRequested
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Invalidated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_PaddingChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Paint
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_QueryContinueDrag
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_QueryAccessibilityHelp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_DoubleClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Enter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_GotFocus
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyPress
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_KeyUp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Layout
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Leave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_LostFocus
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseDoubleClick
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseCaptureChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseEnter
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseLeave
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseHover
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseMove
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseUp
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_MouseWheel
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Move
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_PreviewKeyDown
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Resize
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ChangeUICues
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_StyleChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_SystemColorsChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Validating
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Validated
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ParentChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_ImeModeChanged
,
	[Parameter(ParameterSetName='Default')]
	[PSObject]$On_Disposed
,
	[Parameter(ValueFromRemainingArguments=$true)]
	[string[]]$DependencyProps
)
BEGIN {
   $DObject = New-Object Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker
   $All = Get-Parameter New-Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker | ForEach-Object { $_.Key } | Sort
}
PROCESS {


   # The content of Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker is not a collection
   # So if we're in a pipeline, make a new ColorPicker each time
   if($_) { 
      $DObject = New-Object Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker
   }

   foreach ($param in $PSBoundParameters.GetEnumerator() | ? { [Array]::BinarySearch($All,$_.Key) -ge 0 }) {
      ## TODO: HANDLE DEPENDENCY PROPERTIES
      if($param.Key -eq "DependencyProps") {
      ## HANDLE EVENTS ....
      } elseif ($param.Key.StartsWith("On_")) 
      {
         $EventName = "Add_" + $param.Key.SubString(3)
         $sb = $param.Value -as [ScriptBlock]
         if(!$sb) {
            $sb = (Get-Command $param.Value -CommandType Function,ExternalScript).ScriptBlock
         }
         Invoke-Expression "`$DObject.$EventName( {$($sb.GetNewClosure())} )"
      } ## HANDLE PROPERTIES ....
      else 
      { 
         try {
            ## TODO: File a BUG because Write-DEBUG and Write-VERBOSE die here.
            if($DebugPreference -ne "SilentlyContinue") {
               Write-Host "Setting $($param.Key) of $($DObject.GetType().Name) to $($param.Value)" -fore Yellow
            }
            if(@(foreach($sb in $param.Value) { $sb -is [ScriptBlock] }) -contains $true) {
               $Values = @()
               $bMod = Get-BootsModule
               foreach($sb in $param.Value) {
                  $Values += & $bMod $sb
               }
            } else {
               $Values = $param.Value
            }
      
            if ($DObject.$($param.Key) -is [System.Collections.IList]) {
               if($DebugPreference -ne "SilentlyContinue") { Write-Host "Parameter $($param.Name) is an IList" -fore Cyan}
               foreach ($value in @($Values)) {
                  try {
                     $null = $DObject.$($param.Key).Add($value)
                  }
                  catch [Exception]
                  {
                     # Write-Host "CAUGHT array problem" -fore Red
                     if($_.Exception.Message -match "Invalid cast from 'System.String' to 'System.Windows.UIElement'.") {
                        $null = $DObject.$($param.Key).Add( (TextBlock $value) )
                     } else { 
                       throw
                     }
                  }
               }
            }
            else {
               ## If they pass an array of 1 when we only want one, we just use the first value
               if($Values -is [System.Collections.IList] -and $Values.Count -eq 1) {
                  if($DebugPreference -ne "SilentlyContinue") { Write-Host "Value is an IList" -fore Cyan}
                  try {
                     $DObject.$($param.Key) = $Values[0]
                  }
                  catch [Exception]
                  {
                     # Write-Host "CAUGHT collection value problem" -fore Red
                     if($_.Exception.Message -match "Invalid cast from 'System.String' to 'System.Windows.UIElement'.") {
                        $null = $DObject.$($param.Key).Add( (TextBlock $Values[0]) )
                     }else { 
                        throw
                     }
                  }
               }
               else ## If they pass an array when we only want one, we try to use it, and failing that, cast it to strings
               {
                  if($DebugPreference -ne "SilentlyContinue") { Write-Host "Value is a just $Values" -fore Cyan}
                  try {
                     $DObject.$($param.Key) = $Values
                  } catch [Exception]
                  {
                     # Write-Host "CAUGHT value problem" -fore Red
                     if($_.Exception.Message -match "Invalid cast from 'System.String' to 'System.Windows.UIElement'.") {
                        $null = $DObject.$($param.Key).Add( (TextBlock $values) )
                     }else { 
                        throw
                     }
                  }
               }
            }
            if($DebugPreference -ne "SilentlyContinue") {
               if( $DObject.$($param.Key) -ne $null ) {
                  Write-Host $DObject.$($param.Key).GetType().FullName -fore Green
               }
            }
         }
         catch [Exception]
         {
            Write-Host "COUGHT AN EXCEPTION" -fore Red
            Write-Host $_ -fore Red
            Write-Host $this -fore DarkRed
         }
      }

      while($DependencyProps) {
         $name, $value, $DependencyProps = $DependencyProps
         $name = ([string]@($name)[0]).Trim("-")
         if($name -and $value) {
            Set-DependencyProperty -Element $DObject -Property $name -Value $Value
         }
      }
   }
   Microsoft.PowerShell.Utility\Write-Output $DObject
} #Process
}
                                                                        
New-Microsoft.Research.CommunityTechnologies.AppLib.ColorPicker @PSBoundParameters
